Generally speaking, software applications consist of many files, all of which interoperate to provide the overall functionality of, and the user interface to, the application. Applications can be executables, scripts, and/or libraries such as dynamic link libraries (DLLs), or any combination thereof, which may be provided with resources that support the application's functionality and interface features. At present, DLLs, which are libraries of executable code and/or data, are commonly used by programmers to provide one or more of the functions of an application. The application dynamically links to the DLLs, which are often distributed with the application. In some instances, DLLs may be shared among applications or made available by an operating system. Therefore, both the DLLs and the application code which is programmed to link to the DLLs must be present on the computer at runtime for the application to function properly.
As used herein, the term “resource” or “resources” is used in accordance with its ordinary meaning and generally refers to a library containing text strings and/or image data processed by an application, such as for example those needed to generate a portion of the user interface. The resources of an application may, for example, be encompassed in one or more DLLs, text files, executables, or data files of any type.
Increasingly, however, due to the emergence of global communication networks, such as the Internet and/or the World Wide Web (the “Web”), the global distribution of computer applications has increased markedly. Through electronic file transfer protocols, web-based application providers can distribute applications to users in many different countries. Undoubtedly, these applications will require updates and patches, which may require additional resources. Moreover, it is likely that users will have different preferences related to the operation of the application.
Currently, applications, such as executables, Active X Controls, and the like, are downloaded to a client computer where the application is processed. In many instances, however, the application accesses the Internet or other communication network to retrieve information or content, such as stock quotes, news, electronic mail, and the like. Such “web-based” applications have become popular for a variety of functions because they have the ability to extract and display information in real-time or near real-time from remote databases.
Users desiring such web-based applications commonly register with an on-line application/content provider and download the application to the user's computer, typically referred to as the client computer. During the registration process, the user may be asked to enter personal information or preferences so that the operation and interface of the application can be customized. For instance, users from different countries may have a preference for which language (i.e., English, German, French, etc.) the application utilizes to generate the graphical user interface (GUI) and to communicate with the user. Indeed, in many instances, a user may download a series of applications which may each have certain similar customizable aspects. Furthermore, these applications may utilize the same resources and may be amenable to similar updates.
The presently known methods and systems for managing such resources and for permitting the customization of the operation and interface of applications have shortcomings. For example, known programming methods cannot effectively update or patch existing resources or integrate new resources not initially incorporated into an application without having to restart the application. Therefore, these methods and systems fail to satisfactorily permit the customization of an application to different user preferences. In addition, known methods and systems do not efficiently permit an application/content provider to distribute a single international application.
One known method and system requires that the resources for customizing the application be built (or hard-coded) into the application itself and distributed with each copy. This method, however, undesirably increases the size of the application and is unable to process resources that were not incorporated into the application at the time of download and installation. Because these web-based applications are generally downloaded from remote servers using file transfer protocols (FTP), increased file size adversely affects the file transfer performance, and this increased time factor may be a deterrent to a user downloading it, in addition to increasing necessary network overhead.
Another known method requires the development of separate versions of the application with support for each particular preference. For instance, in the case of language preferences, a developer could provide a separate version for every region to which the application would be distributed. Maintaining numerous versions, however, is time consuming and can result in increased costs to the developer and users.
Yet another known solution would be to build client-side scripts or server-side software applications, which run within the user's Internet browser. In use, only the version of the scripted application that corresponds to the user's particular preference would be downloaded. A change of preference would prompt the download of a separate version of the scripted application. Such scripted applications, however, such as, for example, JavaScript™, are limited by the functionality and extensibility of the scripting language, which often does not have the same speed of operation and access to system functions as full application languages. The availability of bandwidth to users can also adversely affect the performance of scripted or server-side applications, because the scripted application must be downloaded to the client computer each time a preference change is requested. Lastly, server-side applications have limited scalability due to the limits on physical server space and memory and processing power.
There is thus a desire and unmet need to provide a method and system for more efficiently managing the resources of one or more applications. A further desirable and unmet need is to permit the customization of application resources that operates at runtime and that can be efficiently maintained. Furthermore, it is a desirable and unmet need to provide a system and method for permitting updates, patches and further customizable options to be integrated into the application resources, while keeping the application streamlined and preserving its efficiency.